let gulp = require('gulp');
let less = require('gulp-less');
//当发生异常时提示错误 确保本地安装gulp-notify和gulp-plumber
let notify = require('gulp-notify');
let plumber = require('gulp-plumber');
let rename = require('gulp-rename');
let cleanCSS = require('gulp-clean-css');
const concat = require('gulp-concat');
const uglify = require('gulp-uglify');

gulp.task('less', function () {
    return gulp.src('src/css/*.less')
        .pipe(plumber({errorHandler: notify.onError('Error: <%= error.message %>')}))
        .pipe(less())
        .pipe(gulp.dest('src/css'));
});

//压缩css
gulp.task('minifycss', function () {
    return gulp.src(['src/css/*.css', '!src/css/*.min.css'])    //需要操作的文件
        .pipe(rename({suffix: '.min'}))   //rename压缩后的文件名
        .pipe(cleanCSS({compatibility: 'ie7'}))   //执行压缩
        .pipe(gulp.dest('src/css'));   //输出文件夹
});

gulp.task('build', gulp.series('less', 'minifycss'));

// 定义打包任务
gulp.task('bundle-js', function () {
    // 源文件路径（按需要调整）
    return gulp.src([
        './src/js/**/*.js',
        '!./src/js/**/*.min.js'  // 排除带有.min.js后缀的文件
    ]).pipe(concat('jquery.toolbar.all.min.js'))// 合并后的文件名
        .pipe(uglify({                   // 压缩配置
            mangle: true,                  // 混淆变量名（默认 true）
            compress: {
                drop_console: true           // 移除 console 语句
            },
            output: {
                comments: false,              // 移除注释
                comments: /@license|Copyright/ // 保留包含 @license 或 Copyright 的注释
            }
        }))
        // 输出目录（打包后的文件存放位置）
        .pipe(gulp.dest('./src/js'));
});

// 定义默认任务（运行 gulp 时自动执行）
gulp.task('default', gulp.series('bundle-js'));

gulp.task('watch', function () {
    gulp.watch('src/css/*.less', gulp.series('less', 'minifycss'));
    gulp.watch(['./src/js/**/*.js','!./src/js/**/*.min.js'], gulp.series('bundle-js'));
});